<?php

class Variables_Model_Variables extends Model_Cna {
	
	/**
	 * Devuelve un arreglo del listado de Actividades
	 * @return array
	 */
	public function getVariables($datos=array()) {
		$VariablesTable = new Variables_Model_DbTable_Variables();
		return $VariablesTable->getVariables($datos);
	}
	
	/**
	 * Almacena los datos de una variable en la base de datos
	 * @param array $datos Los datos de la variable
	 */
	public function guardarVariable($datos) {
		$VariablesTable = new Variables_Model_DbTable_Variables();
		
		if(isset($datos["codvariable"]) && !empty($datos["codvariable"])) {
			$row = $VariablesTable->find($datos["codvariable"])->current();
			$row->setFromArray($datos)->save();
		} else {
			unset($datos["codvariable"]);
			return $VariablesTable->createRow($datos)->save();
		}
		
	}
	
	/**
	 * Carga los datos de una variable
	 * @param int $codvariable
	 * @return Array con los datos de la variable
	 */
	public function getVariable($codvariable){
		$VariablesTable = new Variables_Model_DbTable_Variables();
		return $VariablesTable->find($codvariable)->current()->toArray();
	}
	
	/**
	 * Eliminar variable
	 * @param $codvariable
	 * @return int El número de filas eliminadas
	 */
	public function eliminarVariable($codvariable){
		$VariablesTable = new Variables_Model_DbTable_Variables();
		return $VariablesTable->find($codvariable)->current()->delete();
	}
	
	
	/**
	 * Devuelve un arreglo del listado de dimensiones de una variable
	 * @return array
	 */
	public function getDimensionesVariable($datos=array()) {
		$VariablesTable = new Variables_Model_DbTable_Dimensiones();
		return $VariablesTable->getDimensionesVariable($datos);
	}
	
	/**
	 * Almacena los datos de una dimensión en la base de datos
	 * @param array $datos Los datos de la dimension
	 */
	public function guardarDimensionVariable($datos) {
		$VariablesTable = new Variables_Model_DbTable_Dimensiones();
		
		if(isset($datos["coddimension"]) && !empty($datos["coddimension"])) {
			$row = $VariablesTable->find($datos["coddimension"])->current();
			$row->setFromArray($datos)->save();
		} else {
			unset($datos["coddimension"]);
			return $VariablesTable->createRow($datos)->save();
		}
		
	}
	
	/**
	 * Carga los datos de una dimension
	 * @param int $coddimension
	 * @return Array con los datos de la dimension
	 */
	public function getDimensionVariable($coddimension){
		$VariablesTable = new Variables_Model_DbTable_Dimensiones();
		return $VariablesTable->find($coddimension)->current()->toArray();
	}
	
	/**
	 * Eliminar dimension
	 * @param $coddimensión
	 * @return int El número de filas eliminadas
	 */
	public function eliminarDimensionVariable($coddimension){
		$VariablesTable = new Variables_Model_DbTable_Dimensiones();
		return $VariablesTable->find($coddimension)->current()->delete();
	}
	
	
	/**
	 * Devuelve un arreglo del listado de Unidasdes
	 * @return array
	 */
	public function getUnidades($datos=array()) {
		$VariablesTable = new Variables_Model_DbTable_Unidades();
		return $VariablesTable->getUnidades($datos);
	}
	
	/**
	 * Devuelve un arreglo del listado de Escalas
	 * @return array
	 */
	public function getEscalas($datos=array()) {
		$VariablesTable = new Variables_Model_DbTable_Escalas();
		return $VariablesTable->getEscalas($datos);
	}

	/**
	 * Devuelve un arreglo del listado historico de una dimensión
	 * @return array
	 */
	public function getHistoricoDimension($datos=array()) {
		$VariablesTable = new Variables_Model_DbTable_Historicodimension();
		return $VariablesTable->getHistoricoDimension($datos);
	}
	
	
	/**
	 * Almacena los datos de una dimensión en la base de datos
	 * @param array $datos Los datos de la dimension
	 */
	public function guardarHistoricoDimension($datos) {
		$VariablesTable = new Variables_Model_DbTable_Historicodimension();
		
		if(isset($datos["codhistorico"]) && !empty($datos["codhistorico"])) {
			$row = $VariablesTable->find($datos["codhistorico"])->current();
			$row->setFromArray($datos)->save();
		} else {
			unset($datos["codhistorico"]);
			return $VariablesTable->createRow($datos)->save();
		}
		
	}
	
	/**
	 * Devuelve un arreglo del listado de Rangos de una escla
	 * @return array
	 */
	public function getRangos($datos=array()) {
		$VariablesTable = new Variables_Model_DbTable_Rangos();
		$datos_rangos = $VariablesTable->getRangos($datos);
		
        $array_rangos = array();
        foreach ($datos_rangos as $value) {
            $array_rangos[$value["codrango"]] = $value["nombrerango"];
        }
        return $array_rangos;
	}
}
